package cc.rengu.igas.channel.alipay.facade;

import cc.rengu.igas.channel.alipay.facade.request.*;
import cc.rengu.igas.channel.alipay.facade.response.*;
import cc.rengu.igas.channel.alipay.facade.result.Result;

/**
 * 支付宝支付组件
 */
public interface AlipayService {

    /**
     * 撤销订单
     *
     * @param aliCancelOrderRequest
     * @return 撤销结果
     * @
     */
    Result<AliCancelOrderResponse> aliCancelOrder(AliCancelOrderRequest aliCancelOrderRequest);

    /**
     * 关闭订单
     *
     * @param aliCloseOrderRequest
     * @return 关闭订单结果
     * @
     */
    Result<AliCloseOrderResponse> aliCloseOrder(AliCloseOrderRequest aliCloseOrderRequest);


    /**
     * 创建订单
     *
     * @param aliCreateOrderRequest
     * @return 创建订单结果
     * @
     */
    Result<AliCreateOrderResponse> aliCreateOrder(AliCreateOrderRequest aliCreateOrderRequest);

    /**
     * 被扫支付
     *
     * @param aliMircopayRequest
     * @return 支付结果
     * @
     */
    Result<AliMircopayResponse> aliMircopay(AliMircopayRequest aliMircopayRequest);

    /**
     * 交易预创建（生成收款二维码）
     *
     * @param aliPrecreateRequest
     * @return 收款二维码
     * @
     */
    Result<AliPrecreateResponse> aliPrecreate(AliPrecreateRequest aliPrecreateRequest);


    /**
     * 查询订单状态
     *
     * @param aliQueryOrderRequest
     * @return 订单结果
     * @
     */
    Result<AliQueryOrderResponse> aliQueryOrder(AliQueryOrderRequest aliQueryOrderRequest);

    /**
     * 退款查询
     *
     * @param aliRefundQueryRequest
     * @return 退款结果
     * @
     */
    Result<AliRefundQueryResponse> aliRefundQuery(AliRefundQueryRequest aliRefundQueryRequest);

    /**
     * 退款
     *
     * @param aliRefundRequest
     * @return 退款结果
     * @
     */
    Result<AliRefundResponse> aliRefund(AliRefundRequest aliRefundRequest);

    /**
     * 资金冻结
     * @param aliFundFreezeRequest
     * @return冻结结果
     */
    Result<AliFundFreezeResponse> aliFundFreeeze(AliFundFreezeRequest aliFundFreezeRequest) ;

    /**
     * 资金撤销
     * @param aliFundCancelRequest
     * @return撤销结果
     */
    Result<AliFundCancelResponse> aliFundCancel(AliFundCancelRequest aliFundCancelRequest) ;

    /**
     * 资金解冻
     * @param aliFundUnfreezeRequest
     * @return解冻结果
     */
    Result<AliFundUnfreezeResponse> aliFundUnfreeze(AliFundUnfreezeRequest aliFundUnfreezeRequest) ;

    /**
     * 资金操作查询
     * @param aliFundOprQueryRequest
     * @return操作查询结果
     */
    Result<AliFundOprQueryResponse> aliFundOprQuery(AliFundOprQueryRequest aliFundOprQueryRequest) ;

}
